import { IPSModelObject } from './ipsmodel-object';
import { IPSModelService } from './ipsmodel-service';

/**
 * 模型基础服务代理对象
 * @export
 * @interface IPSModelService
 */
export interface IPSModelServiceProxy extends IPSModelService {
  /**
   * 初始化
   * @param iPSModelService
   * @param tag
   */
  init(iPSModelService: IPSModelService, tag: any): void;

  /**
   * 原模型服务
   *
   * @return {*}  {IPSModelService}
   */
  getRealPSModelService(): IPSModelService;

  getRealObjectNode(objectNode: IModel): IModel;

  /**
   * 从模型节点中获取指定对象
   *
   * @param {IPSModelObject} relatedPSModelObject
   * @param {string} cls
   * @param {*} objNode
   * @param {string} strTag
   * @return {*}  {IPSModelObject}
   */
  getPSModel4(relatedPSModelObject: IPSModelObject, cls: string, objNode: any, strTag: string): IPSModelObject;

  /**
   * 从模型数组中获取指定对象
   *
   * @param {IPSModelObject} relatedPSModelObject
   * @param {string} cls
   * @param {any[]} list
   * @param {*} objKey
   * @return {*}  {IPSModelObject}
   */
  getPSModel5(relatedPSModelObject: IPSModelObject, cls: string, list: any[], objKey: any): IPSModelObject;

  /**
   * 查找子模型
   *
   * @param {IPSModelObject} relatedPSModelObject
   * @param {string} cls
   * @param {IModel} objNode
   * @return {*}  {IPSModelObject}
   */
  getChildPSModelObject(relatedPSModelObject: IPSModelObject, cls: string, objNode: IModel): IPSModelObject;

  /**
   * 查找子模型
   *
   * @param {IPSModelObject} relatedPSModelObject
   * @param {string} cls
   * @return {*}  {IPSModelObject}
   */
  getParentPSModelObject(relatedPSModelObject: IPSModelObject, cls: string): IPSModelObject;
}
